package com.service.admin.utils;

import lombok.extern.slf4j.Slf4j;

import java.math.BigDecimal;

/** 
 *
 * @version $Id: MathUtil.java, v 0.1
 */
@Slf4j
public class MathUtil {


    /**
     * 加法
     */
    public static BigDecimal add(BigDecimal a, BigDecimal b, int scale, int roundingMode) {
        return a.add(b).setScale(scale, roundingMode);
    }
    /**
     * 加法
     */
    public static BigDecimal add(BigDecimal a, BigDecimal b, int scale) {
        return a.add(b).setScale(scale, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 减法
     */
    public static BigDecimal sub(BigDecimal a, BigDecimal b){
        return  a.subtract(b);
    }

    /**
     * 减法
     */
    public static BigDecimal sub(BigDecimal a, BigDecimal b, int scale ){
        return a.subtract(b).setScale(scale);
    }

    /**
     * 减法
     */
    public static BigDecimal sub(BigDecimal a, BigDecimal b, int scale ,int roundingMode){
        return a.subtract(b).setScale(scale, roundingMode);
    }

    /**
     * 乘法
     */
    public static BigDecimal mul(BigDecimal a, BigDecimal b, int scale,int roundingMode){
        return a.multiply(b).setScale(scale, roundingMode);
    }
    /**
     * 乘法
     */
    public static BigDecimal mul(BigDecimal a, BigDecimal b, int scale){
        return a.multiply(b).setScale(scale, BigDecimal.ROUND_HALF_UP);
    }


    /**
     * 除法
     */
    public static BigDecimal div(BigDecimal a, BigDecimal b, int scale,int roundingMode){
        if (BigDecimal.ZERO.compareTo(b) == 0) {
            return BigDecimal.ZERO;
        }
        return a.divide(b, scale, roundingMode);
    }
    /**
     * 除法
     */
    public static BigDecimal div(BigDecimal a, BigDecimal b, int scale){
        return div(a, b, scale, BigDecimal.ROUND_HALF_UP);
    }

}